// 给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。

// 输入：head = [1,2,3,4,5]
// 输出：[5,4,3,2,1]

// 输入：head = [1,2]
// 输出：[2,1]

// 输入：head = []
// 输出：[]

// ListNode的定义
// function ListNode(val, next) {
//   this.val = (val===undefined ? 0 : val)
//   this.next = (next===undefined ? null : next)
// }

function reverseList(head) {
  // 初始化 prev 为 null，curr 为头节点
  let prev = null;
  let curr = head;

  // 循环遍历链表
  while (curr !== null) {
    // 暂存当前节点的下一个节点
    const nextTemp = curr.next;
    // 反转当前节点的指针
    curr.next = prev;
    // 更新 prev 和 curr 指针
    prev = curr;
    curr = nextTemp;
  }

  // 返回新的头节点
  return prev;
}
